import Axios from 'axios'
import router from './../router'
import { Loading } from 'element-ui'
import store from './../store'

// 创建一个Axios的实例：
let http = Axios.create({
  timeout: 10000,
  baseURL: process.env.VUE_APP_BASE_URL
})

export default http

let loadingInstance
http.interceptors.request.use(
  requestConfig => {
    let token = store.state.token // sessionStorage.getItem('token')
    // Authorization 属性，要和后端对接一下，是否是这个属性。也可能是其它
    token && (requestConfig.headers['Authorization'] = token)
    // console.log('请求前的config:', requestConfig)
    //显示 加载数据的动画
    loadingInstance = Loading.service({
      fullscreen: true,
      text: '正在为您努力加载中...',
      background: 'rgba(0,0,0,0.1)'
    })

    return requestConfig
  },
  error => Promise.reject(error)
)

http.interceptors.response.use(
  res => {
    // console.log("响应后:", res)  //看一下如何正确的获取token值；
    // 判断toKen如果获取，决定下一行代码的写法：
    // 还有可能是： res.data.data.token;
    // res.data.token && sessionStorage.setItem('token', res.data.token)

    // 成功响应后，关闭动画
    loadingInstance.close()
    return res.data
  },
  error => {
    // console.log("响应后err:", error)
    loadingInstance.close()
    let _resp = error.response
    // console.log(_resp)
    // 主要是应对token过期，或者是无效的token.
    switch (_resp.status) {
      case 401:
        sessionStorage.clear()
        return router.push('/login')
    }
    return Promise.reject(error.response.data)
  }
)
